package cn.doitedu.df_rdd

import cn.doitedu.beans.JavaStudent
import cn.doitedu.util.SparkUtil
import org.apache.spark.rdd.RDD

/**
 * @Date 22.4.12
 * @Created by HANGGE
 * @Description
 *
 */
object C05_RDD_2_DF_JavaBean {
  def main(args: Array[String]): Unit = {
    val session = SparkUtil.getSession
    //获取sparkContext
    val sc = session.sparkContext
    // 加载数据  RDD
    val rdd: RDD[String] = sc.textFile("data\\scores\\Scores.csv")

    // RDD的数据结构 封装JavaBean
    val javaBeanRDD: RDD[JavaStudent] = rdd.map(line => {
      val arr = line.split(",")
     new JavaStudent(arr(0).toInt, arr(1), arr(2).toInt, arr(3), arr(4), arr(5).toDouble)
    })

    // 创建DF = 结构+ 数据
    // spark不能自定的解析JavaBean类型
    // 参数二  数据的类型 底层通过反射 JavaStudent-->Row
    val df = session.createDataFrame(javaBeanRDD, classOf[JavaStudent])

    df.show()
    df.printSchema()

  /*  import  session.implicits._
    // javaBean没有直接ToDF的方法
    javaBeanRDD.toDF()*/
  }

}
